/**
 * admin_biz_config.js
 * 管理员业务模块配置入口 - store专用
 * 解决跨包引用问题
 */

// 内联实现AdminBiz必要功能
const cacheHelper = require('../../../helpers/cache_helper.js');
const cloudHelper = require('../../../helpers/cloud_helper.js');
const pageHelper = require('../../../helpers/page_helper.js');
const constants = {
  CACHE_ADMIN: 'ADMIN_TOKEN',
  ADMIN_TOKEN_EXPIRE: 86400 * 3 // 3天有效期
};

// 内联实现必要的AdminBiz功能
const AdminBiz = {
  // 清空管理员登录
  clearAdminToken() {
    cacheHelper.remove(constants.CACHE_ADMIN);
  },

  // 获取管理员信息
  getAdminToken() {
    return cacheHelper.get(constants.CACHE_ADMIN);
  },

  // 获取管理员名称
  getAdminName() {
    let admin = cacheHelper.get(constants.CACHE_ADMIN);
    if (!admin) return '';
    return admin.name;
  },

  // 是否超级管理员
  isSuperAdmin() {
    let admin = cacheHelper.get(constants.CACHE_ADMIN);
    if (!admin) return false;
    return (admin.type == 1);
  },

  // 登录状态判定
  isAdmin(that, isSuper = false) {
    wx.setNavigationBarColor({ //顶部
      backgroundColor: '#2499f2',
      frontColor: '#ffffff',
    });

    // 如果是子包，隐藏返回按钮
    if (wx.hideHomeButton) wx.hideHomeButton();

    let admin = cacheHelper.get(constants.CACHE_ADMIN);
    if (!admin) {
      return wx.showModal({
        title: '',
        content: '登录已过期，请重新登录',
        showCancel: false,
        confirmText: '确定',
        success: res => {
          wx.reLaunch({
            url: pageHelper.fmtURLByPID('/pages/admin/index/login/admin_login'),
          });
          return false;
        }
      });
    }

    if (isSuper && admin.type != 1) {
      return wx.showModal({
        title: '',
        content: '此功能需要超级管理员操作',
        showCancel: false,
        confirmText: '确定',
        success: res => {
          wx.reLaunch({
            url: pageHelper.fmtURLByPID('/pages/admin/index/home/admin_home'),
          });
          return false;
        }
      });
    }

    if (that) {
      that.setData({
        isAdmin: true,
        isSuperAdmin: this.isSuperAdmin(),
        admin
      });
    }
    return true;
  }
};

module.exports = AdminBiz; 